/**
 * 类名：用户权限业务类
 * 备注：负责用户权限的业务逻辑。
 * 作者：rankin
 * 日期：2016/03/4
 */
var UserPermission = require('../models/UserPermission');
var UserRole = require('../models/UserRole');
var _ = require('underscore');

module.exports = {

    /**
     * 角色列表
     */
    list: function (req, res, next) {

        //获取参数
        var page = req.query.num || 1;

        //查询角色列表
        UserRole.paginate({}, {page: page, limit: 10}).then(function (result) {
            res.render('user/role_list', {
                pages: result.pages,
                roles: result.docs
            });
        }).error(function (err) {
            res.send({success: false, err: err});
        });
    },
    /**
     * 角色列表
     */
    ajax_list: function (req, res, next) {
        //查询角色列表
        UserRole.find().then(function (roles) {
            res.send({success: true, data: roles});
        }).error(function (err) {
            res.send({success: false, err: err});
        });
    },
    /**
     * 跳转到角色权限列表
     * @param req
     * @param res
     * @param next
     */
    to_create: function (req, res, next) {
        res.render('user/role_create');
    },
    /**
     * 增加角色
     * @param req
     * @param res
     * @param next
     */
    do_create: function (req, res, next) {

        //获取参数
        var name = req.body.name;
        var permissions = req.body.permissions;

        var role = new UserRole({
            name: name,
            permissions: permissions
        });

        //保存
        role.save().then(function () {
            res.redirect('/user/role/list');
        }).error(function (err) {
            res.send({success: false, err: err});
        });
    },
    /**
     * 跳转到角色编辑页
     * @param req
     * @param res
     * @param next
     */
    to_edit: function (req, res, next) {
        //获取参数
        var rid = req.params.id;
        //查询角色
        UserRole.findOne({_id: rid}).then(function (role) {
            if (role) {
                res.render('user/role_edit', {role: role});
            } else {
                res.send({success: false, err: 'the role do not exists.'});
            }
        }).error(function (err) {
            res.send({success: false, err: err});
        }).catch(function (err) {
            res.send({success: false, err: err.message});
        });
    },
    /**
     * 更新角色
     * @param req
     * @param res
     * @param next
     */
    do_edit: function (req, res, next) {

        //获取参数
        var rid = req.body.id;

        //查询角色
        UserRole.findOne({_id: rid}).then(function (role) {
            if (role) {
                //获取参数
                var name = req.body.name;
                var permissions = req.body.permissions;
                //更新字段9999
                _.extend(role, {
                    name: name,
                    permissions: permissions
                });
                //保存数据
                return role.save();
            } else {
                res.send({success: false, err: 'the role do not exists.'});
            }
        }).then(function (role) {
            res.redirect('/user/role/list');
        }).error(function (err) {
            res.send({success: false, err: err});
        }).catch(function (err) {
            res.send({success: false, err: err.message});
        });
    },
    /**
     * 删除角色
     * @param req
     * @param res
     * @param next
     */
    remove: function (req, res, next) {
        //获取参数
        var rid = req.params.id;
        //保存
        UserRole.remove({_id: rid}).then(function () {
            res.redirect('/user/role/list');
        }).error(function (err) {
            res.send({success: false, err: err});
        });
    },
    /**
     * 权限树
     */
    getTree: function (req, res) {
        UserPermission.find({_id: 0}).exec().then(function (docs) {
            res.send({success: true, data: docs[0]});
        });
    }
};

